"""
 1.在该模块中封装一个框架执行的入口函数，当执行该函数时，能执行指定路径的所有测试用例
 2.生成测试数据，并生成测试报告
"""
import os

import yaml

from common.log import Logger
from common.zip_file import zip_files
from common.send_email import SendEmail

logging = Logger(__name__).get_logger()


def run_cases():
    config_path = r"./config.yaml"
    with open(config_path, "r", encoding="UTF-8") as f:
        config_data = yaml.safe_load(f) # yaml.safe_load()把上述 yaml语法的字符串进行数据类型还原，还原成第一步中的 list
        # print(type(config_data))
    # 定义 pytest+allure 执行测试用例并生成测试数据的命令
    test_allure = config_data.get("pytest_command").get("test_allure")
    logging.info(f"入口函数 run_cases  正在执行命令：{test_allure}")
    # 通过 os.system  模块执行 test_allure  命令
    os.system(test_allure)
    # # 定义 allure  根据测试数据生成测试报告的命令
    make_report = config_data.get("pytest_command").get("make_report")
    logging.info(f"入口函数 run_cases  正在执行命令：{make_report}")
    # 通过 os.system  模块执行 make_report  命令
    os.system(make_report)
    # 测试用例执行完毕，我们把测试报告打包进行邮件发送
    # dir_path = r"./report"  # 要压缩的目标文件
    # zip_path = r"./report_zip/report.zip"  # 压缩后压缩包存储路径包括压缩包的名称
    # zip_report = zip_files(dir_path, zip_path)
    # if zip_report:
    #     mail_host = config_data.get("Email").get("mail_host")
    #     mail_user = config_data.get("Email").get("mail_user")
    #     mail_pass = config_data.get("Email").get("mail_pass")
    #     sender = config_data.get("Email").get("sender")
    #     receives = config_data.get("Email").get("receives")
    #     try:
    #         SendEmail(mail_host, mail_user, mail_pass, sender, receives).send_mail_by_att(zip_path)
    #         logging.info("测试报告邮件发送成功")
    #     except Exception as e:
    #         logging.error(f"邮件发送异常：{e}")
    #         raise e


if __name__ == '__main__':
    run_cases()
    # # print("当前工作目录：", os.getcwd())
    # print("Python 版本:", os.popen('python --version').read())
